﻿using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using WCS.Infrastructure.Attr;
using WCS.Infrastructure.Dto.Request.Organization;
using WCS.Infrastructure.Dto.Request.Payment;
using WCS.Infrastructure.Dto.Request.User;
using WCS.Infrastructure.Dto.Response.Common;
using WCS.Infrastructure.Dto.Response.User;
using WCS.Infrastructure.EFCore;

namespace WCS.Service.Interface
{
    [Provider]
    public interface IUserService
    {
        /// <summary>
        /// B端登录
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> LoginWeChatToBAsync(LoginRequestDto dto);

        /// <summary>
        /// B端验证码登录
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> LoginVerificationCodeToBAsync(LoginRequestDto dto);

        /// <summary>
        /// C端微信登录
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> LoginWeChatToCAsync(LoginRequestDto dto);

        /// <summary>
        /// C端支付宝登录
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> LoginAlipayPaymentToCAsync(LoginRequestDto dto);

        /// <summary>
        /// 获取当前用户
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        Task<ApiResult> GetUserByCodeAsync(string? code);

        /// <summary>
        /// 获取用户虚拟账信息
        /// </summary>
        /// <returns></returns>
        Task<ApiResult> GetUserVirtualAccountAsync();


        /// <summary>
        /// 新增用户
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> AddUserAsync(UserRequestDto dto);

        /// <summary>
        /// 修改用户密码
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> UpdateUserPasswordAsync(UserPasswordUpdateRequestDto dto);

        /// <summary>
        /// 修改用户头像
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> UpdateUserAvatarAsync(UserAvatarUpdateRequestDto dto);

        /// <summary>
        /// 实名用户信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> RealNameUserInformationAsync(RealNameUserInformationRequestDto dto);

        /// <summary>
        /// 校验实名用户信息
        /// </summary>
        /// <returns></returns>
        Task<ApiResult> CheckRealNameUserInformationAsync(string? userId);

        /// <summary>
        /// 获取用户列表
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>

        Task<ApiResult> GetUserListAsync(UserRequestDto dto);

        /// <summary>
        /// 获取当前用户角色权限
        /// </summary>
        /// <returns></returns>
        Task<CurUserRolePermissionResponseDto> GetCurUserRolePermissionAsync();

        /// <summary>
        /// 禁用/启用 用户
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> BanUserAsync(UserRequestDto dto);

        /// <summary>
        /// 删除用户
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> DeleteUserAsync(UserRequestDto dto);

    }
}
